Amazon SageMaker でハイパーパラメータチューニングをしようとして詰まったこと
はじめに
Amazon SageMakerは、機械学習のモデルの学習からホストまで行うことができる、フルマネージドサービスです。 当エントリでは、Amazon SageMakerの組み込みアルゴリズムのハイパーパラメータチューニングを行う際に詰まった内容とその解決策について紹介します。
詰まった内容
Amazon SageMakerで組み込みアルゴリズムの画像分類を使ったモデルのハイパーパラメータチューニングを実行した際に、エラーが出て学習が止まってしまいました。 エラーの内容は次の通りです。
ClientError: Additional hyperparameters are not allowed (u'sagemaker_estimator_module', u'sagemaker_estimator_class_name' were unexpected) (caused by ValidationError) Caused by: Additional properties are not allowed (u'sagemaker_estimator_module', u'sagemaker_estimator_class_name' were unexpected) Failed validating u'additionalProperties' in schema: {u'$schema': u'http://json-schema.org/schema#', u'additionalProperties': False, u'definitions': {u'boolean_string': {u'enum': [u'true', u'false'], u'type': u'string'}, u'float_string': {u'oneOf': [{u'pattern': u'^-?[0-9]*\\.?[0-9]+$', u'type': u'string'}, {u'type': u'number'}]}, u'initialization_method': {u'enum': [u'normal', u'uniform', u'cons
sagemaker_estimator_module
やsagemaker_estimator_class_name
というパラメータが余分だと言われているようです。
しかし、ハイパーパラメータチューニングジョブを動かしたコードではそのようなパラメータを指定していませんし、ドキュメントにも記載は無さそうです。なので、SDKが自動的に付与したパラメータのようです。
ちなみに、エラーが出た学習のハイパーパラメータは次の通りです。赤枠で囲ってあるところが、エラー文で指摘を受けたパラメータです。
解決策
HyperparameterTunerをfitする際の引数でinclude_cls_metadata
をFalseとして設定することで解決しました。
tuner.fit(inputs=data_channels, logs=True, include_cls_metadata=False)
こちらのフォーラムによるとSDKからチューニングジョブを呼び出す際に、デフォルトでは自動でパラメータを追加設定しているようです。しかし、ファーストパーティのアルゴリズムの場合には、そのパラメータの自動付与設定をオフにしないといけないようです。
ファーストパーティ以外のアルゴリズムの場合はinclude_cls_metadata
をTrueにする必要があるので、使用するアルゴリズムに応じて設定を変える必要があります。
自らの失敗とフォーラムの内容から、DeepARと画像分類がファーストパーティのアルゴリズムに該当していそうだとは分かるんですが、それ以外の組み込みアルゴリズムのどれが該当するかは不明です。
基本的にはinclude_cls_metadata
=Trueにしておいて、同様のエラーが出た際にはFalseにすると良さそうです。
さいごに
Amazon SageMakerでファーストパーティのアルゴリズムのハイパーパラメータチューニングを行う際にハマった内容とその解決策について紹介しました。
私と同様にハイパーパラメータチューニングで詰まっている方の参考となれば幸いです。